﻿using BCCommon;
using BCCommon.Enums;
using BCDto.Sim.Admin.Admin;
using BCDto.Sim.Company.Company;
using System;
using System.Collections.Generic;
using System.Text;

namespace BCService.Sim.Company.Company
{
    /// <summary>
    /// 公司服务
    /// </summary>
    public interface ICompanyService
    {
        /// <summary>
        /// 添加公司
        /// </summary>
        /// <param name="adminDto">员工信息</param>
        /// <param name="companyRequestDto">公司新增信息</param>
        /// <returns></returns>
        CompanyDto Add(AdminDto adminDto, CompanyRequestDto companyRequestDto);
        /// <summary>
        /// 修改公司
        /// </summary>
        /// <param name="adminDto">员工信息</param>
        /// <param name="companyPutDto">公司修改信息</param>
        /// <returns></returns>
        CompanyDto Update(AdminDto adminDto, CompanyPutDto companyPutDto);
        /// <summary>
        /// 删除公司
        /// </summary>
        /// <param name="companyId">公司Id</param>
        void Delete(int companyId);
        /// <summary>
        /// 获取公司列表
        /// </summary>
        /// <returns></returns>
        IEnumerable<CompanyDto> GetList(AdminDto adminDto);
        /// <summary>
        /// 获取公司
        /// </summary>
        /// <param name="companyId">公司Id</param>
        /// <returns></returns>
        CompanyDto Get(int companyId);
        /// <summary>
        /// 查询公司信息（分页）
        /// </summary>
        /// <param name="companyBusinessTypeCode">公司业务类型</param>
        /// <param name="companyName">公司名称</param>
        /// <param name="companyStatus">公司运营状态</param>
        /// <param name="start">开始时间</param>
        /// <param name="end">结束时间</param>
        /// <param name="sortName">排序字段</param>
        /// <param name="ascending">升序</param>
        /// <param name="pageIndex">当前页码</param>
        /// <param name="pageSize">每页数据条数</param>
        /// <returns></returns>
        PageableList<CompanyDto> Query(string companyBusinessTypeCode, string companyName, CompanyStatus? companyStatus, DateTime? start, DateTime? end, string sortName, bool? ascending, int pageIndex, int pageSize);

        /// <summary>
        /// 更新公司表负责人ID
        /// </summary>
        /// <param name="companyId">公司ID</param>
        /// <param name="adminId">负责人ID</param>
        void UpdateCompanyAdminId(long companyId, long adminId);

        /// <summary>
        /// 工作流特殊表单添加添加部门信息
        /// </summary>
        /// <param name="companyAdminId">负责人ID</param>
        void JobAdd(long companyAdminId);
    }
}
